export default {
  data() {
    return {
      // 查询用户列表时候，要携带的查询参数
      queryinfo: {
        query: '', // 用户输入的搜索条件
        bizType:"", // 业务类型列表
        broker:'',
        status:"", // 状态列表
        pagenum: 1, // 当前请求的是第几页数据
        pagesize: 10 // 每页显示几条数据
      },
      bizOptions: [{
        value: "1",
        label: "投保"
      }, {
        value: "0",
        label: "批单"
      }, {
        value: "4",
        label: "手续费"
      }, {
        value: "5",
        label: "理赔"
      }],
      statusOptions: [{
        value: "-1",
        label: "数据有误"
      }, {
        value: "0",
        label: "未推送"
      }, {
        value: "2",
        label: "推送失败"
      }, {
        value: "3",
        label: "推送成功"
      }],
      brokerOptions: [{
        value: "英大长安保险经纪有限公司",
        label: "英大长安保险经纪有限公司"
      }, {
        value: "南山财司经纪公司",
        label: "南山财司经纪公司"
      }, {
        value: "国电投经纪公司",
        label: "国电投经纪公司"
      }],
      dateRange:[],
      bizTypeList:[], // 业务类型列表
      statusList:[], // 状态列表
      brokerList:[], // 经纪公司列表
      total: 0, // 总共有多少条数据
      // 用户列表
      proposalHistoryList: [],
      // 控制添加 用户 对话框的显示和隐藏
      addDialogVisible: false,
      // 控制 编辑对话框的显示和隐藏
      editDialogVisible: false,
      // 编辑的表单数据
      editForm: {
        id:'',
        invokeParam: '',
        invokeResponse: '',
        invokeParamEncrypt: '',
        brokerName: '',
        createdDate: '',
        invokeStatus: '',
        bizType: ''
      },
      // 编辑的表单验证规则
      editFormRules: {
        // email: [
        //   { required: true, message: '请输入邮箱', trigger: 'blur' },
        //   // 使用自定义的邮箱校验规则
        //   { validator: checkEmail, trigger: 'blur' }
        // ],
        // mobile: [
        //   { required: true, message: '请输入手机', trigger: 'blur' },
        //   // 使用自定义的手机号验证规则
        //   { validator: checkMobile, trigger: 'blur' }
        // ]
      }
    }
  },
  created() {
    this.getProposalHistoryList()
  },
  methods: {
    // 根据查询参数，获取用户列表
    async getProposalHistoryList() {
      // 设置下拉框业务列表
      this.queryinfo.bizType = "";
      if(this.bizTypeList != null){
        this.queryinfo.bizType = this.bizTypeList.join(",")
      }
      // 设置下拉框状态列表
      this.queryinfo.status = "";
      if(this.statusList != null){
        this.queryinfo.status = this.statusList.join(",")
      }
      // 设置下拉框经纪公司列表
      this.queryinfo.broker = "";
      if(this.brokerList != null){
        this.queryinfo.broker = this.brokerList.join(",")
      }

      if(this.dateRange==null){
        this.queryinfo.startDate = null;
        this.queryinfo.endDate = null;
      }else if(this.dateRange.length == 1){
        this.queryinfo.startDate = Date.parse(this.dateRange[0]);
      } else if(this.dateRange.length == 2){
        this.queryinfo.startDate = Date.parse(this.dateRange[0]);
        this.queryinfo.endDate = Date.parse(this.dateRange[1]);
        console.log(this.queryinfo.startDate)
        console.log(this.queryinfo.endDate)
      }
      // 发起 get 请求，并携带 查询参数
      const { data: res } = await this.$http.get('proposal/proposalHistory', { params: this.queryinfo })
      // console.log(res)
      if (res.meta.status !== "200") return this.$message.error('请求用户列表失败！')
      // 为保单列表赋值
      this.proposalHistoryList = res.data.proposalHistoryList
      // 为总页数赋值
      this.total = res.data.total
    },
    resetQueryForm() {
      this.flagList = [];
      this.statusList = [];
      this.brokerList = [];
      this.dateRange = [];
      this.queryinfo.query = '';
      console.log(this.queryinfo)
      // this.$refs[formName].resetFields();
    },
    // 监听 pagesize 的变化
    handleSizeChange(newSize) {
      // 把最新的 pagesize 赋值给 this.queryinfo
      this.queryinfo.pagesize = newSize
      this.getProposalHistoryList()
    },
    // 监听 页码值 的变化
    handleCurrentChange(newPageNum) {
      this.queryinfo.pagenum = newPageNum
      this.getProposalHistoryList()
    },
    // 每当点击开关，就触发这个函数，把最新的状态保存到数据库
    async switchChanged(newState, id) {
      const { data: res } = await this.$http.put(`proposal/proposalHistory/${id}/state/${newState}`)
      if (res.meta.status !== "200") return this.$message.error('修改保单状态失败！')
      this.$message.success('修改保单状态成功！')
    },
    // 实现状态修改的第二种方式 - 【比较好理解的方式】
    async switchChanged2(newState, id) {
      // debugger
      const { data: res } = await this.$http.put(`proposal/proposalHistory/${id}/state/${newState}`)
      if (res.meta.status !== "200") return this.$message.error('修改保单状态失败！')
      this.$message.success('修改保单状态成功！')
    },
    // 监听 添加用户对话框的关闭事件
    addDialogClosed() {
      // 重置表单
      this.$refs.addFormRef.resetFields()
    },
    formatFlag: function( row, column) {
      return row.ud_status == '1' ? "财产险" : row.ud_status == '2' ? "人身险" : "车险";
    },
    // 关闭 编辑对话框时候的处理函数
    editDialogClosed() {
      // 重置编辑表单
      this.$refs.editFormRef.resetFields()
    },
    // 点击编辑按钮，展示编辑的对话框
    async showEditDialog(scope) {
      // console.log(scope.row.id)
      const { data: res } = await this.$http.get('proposal/proposalHistory/' + scope.row.id)
      if (res.meta.status !== "200") return this.$message.error('获取规则信息失败！')
      // console.log(res.data)
      this.editForm.id = res.data.id
      this.editForm.brokerName = res.data.brokerName
      this.editForm.bizType = res.data.bizType
      this.editForm.invokeStatus = res.data.invokeStatus
      this.editForm.invokeParam = res.data.invokeParam
      this.editForm.invokeResponse = res.data.invokeResponse
      this.editForm.invokeParamEncrypt = res.data.invokeParamEncrypt
      this.editForm.createdDate = res.data.createdDate
      // 显示编辑对话框
      this.editDialogVisible = true
    },
    // 点击按钮，保存对规则做的修改
    editProposal() {
      this.$refs.editFormRef.validate(async valid => {
        if (!valid) return
        const { data: res } = await this.$http.put('proposal/proposalInfo/' + this.editForm.infoNum, this.editForm)
        if (res.meta.status !== "200") return this.$message.error('编辑保单失败！')
        this.$message.success('编辑保单成功！')
        this.getProposalList()
        this.editDialogVisible = false
      })
    },
    // 删除用户
    async remove(scope) {
      const confirmResult = await this.$confirm('此操作将逻辑删除该规则, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).catch(err => err)
      // admin 账户不允许删除
      if (scope.row.username === 'admin') {
        return this.$message({
          type: 'info',
          message: 'admin账户不允许删除，已取消删除'
        })
      }
      // 用户取消了删除
      if (confirmResult !== 'confirm') {
        return this.$message({
          type: 'info',
          message: '已取消删除'
        })
      }
      const { data: res } = await this.$http.delete('proposal/proposalInfo/' + scope.row.id)
      if (res.meta.status !== "200") return this.$message.error('删除规则失败！')
      this.$message.success('删除规则成功！')
      this.getRuleList()
    }
  }
}
